In this discussion, an executable can refer to a single instance of a set of execution code that performs one or more operations or services. An example of an executable is a web server, which is well known in the industry. For this example, it will be assumed there is a single executable representing the services provided by a web server. A web server processes requests that are received using the HTTP protocol and performs local operations and sends back information such as a web page. The web server could handle the user authenticating themselves plus looking up information in databases along with responding to requests for information. Another example of an executable is a relational database server implemented as a single executable. In this case, it will receive SQL requests and perform operations on the database and data and return the results of the request. An execution environment can be a computer, virtual machine, software container, and/or the like that an executable can execute in. An application or solution can be a set of executables running in the same or different execution environments. An example of such a hierarchy is shown in FIG. 13, which is described further below.
Computer applications have become larger and more complex over time. Along with this, advances with computer hardware has enabled multiple executables to run together in a single computer or across multiple computer environments. A typical solution or application is made up or a number of separate executables. With the new use of software containers, applications are being further broken up into smaller pieces called micro-services. All of these independent executables communicate to create the single solution offered to the end user. The use of software containers and virtual machines in many configurations, has created an environment where each software container or virtual machine is running a single executable.
Many of these solutions often have configurations that require the executables, running in their own execution environments, to have static IP addresses or to be able to lookup services by name. A static IP address is when an execution environment has pre-defined the network IP address that it will use. Every time it starts, the execution environment typically uses the exact same address. This is in comparison to DHCP (Dynamic Host Configuration Protocol), which automatically assigns IP addresses when the execution environment starts. Regardless if the execution environment is using a static IP address or DHCP IP address, the executables running in the execution environment may need to request the IP address of another executable. This is done by making a special network call to a DNS (Domain Name Server) service on the network. The DNS service will convert a known name into an IP address.
Problems can arise if one needs to have multiple copies of the complete solution and the solution was not designed to have its static IP addresses or DNS names be different for each installation. For example, if the database server is sent network messages using an IP address of 172.16.166.20 or by using a name like centraldbsvr (e.g., which is converted to an IP address using DNS), then it can be difficult to run multiple copies of the solution (e.g., in the same network) because the address or name is pre-configured in the solution.
Another problem can occur if one would like to move part of the solution, for example an executable, to another compute environment. Since the executables often communicate over the network, if the executables are on the same computer, or in same computer room, building, or wider disbursement, then moving a part of the solution should not matter as long as the network can determine how to deliver the network message using the provided IP address. However, problems can arise if the required IP address or DNS name already exists in the network that you want to move an executable to or run the 2nd or more copies in. In this case, there is a network address conflict and message delivery cannot occur, which means the solution will not work.